package classi;

import java.util.TreeSet;

public class Docente extends Account implements Comparable<Docente> {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -3568573504240511853L;
	private TreeSet<Appello> listaAppelli = null;
	
	
	public Docente(String username, String password, String nome,
			String cognome, String cf) {
		super(username, password, nome, cognome, cf);
		this.listaAppelli = new TreeSet<Appello>();
	}


	public void aggiungiAppello(Appello appello){
		this.listaAppelli.add(appello);
	}
	
	public boolean modificaAppello(Appello a,Appello nuovo){
//		Appello tmp ;
		for(Appello tmp:listaAppelli){
			if(tmp.equals(a)){
				listaAppelli.remove(tmp);
				listaAppelli.add(nuovo);
				return true;
			}//if
		}//for
		return false;
	}//metodo
	
	public boolean eliminaAppello(Appello a){
		for(Appello tmp:listaAppelli){
			if(tmp.equals(a)){
				listaAppelli.remove(tmp);
				return true;
			}//if
		}//for
		return false ;
	}//metodo


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result
				+ ((listaAppelli == null) ? 0 : listaAppelli.hashCode());
		return result;
	}


	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (!(obj instanceof Docente))
			return false;
		Docente other = (Docente) obj;
		if (listaAppelli == null) {
			if (other.listaAppelli != null)
				return false;
		} else if (!listaAppelli.equals(other.listaAppelli))
			return false;
		return true;
	}


	public TreeSet<Appello> getListaAppelli() {
		return listaAppelli;
	}


	public void setListaAppelli(TreeSet<Appello> listaAppelli) {
		this.listaAppelli = listaAppelli;
	}
	
	public String toString(){
		StringBuilder sb = new StringBuilder();
		sb.append("["+ this.getCognome()+" , "+this.getNome()+"]");
		return sb.toString();
	}


	@Override
	public int compareTo(Docente o) {
		return super.getCf().compareTo(o.getCf());
	}

	

}
